DMA (direct memory access) is a traditional technology that moves or copies items from one place to another in the dynamic memory of a computing device while using only a small amount or none of the resources of the computing device's central processing unit. RDMA extends this concept and moves or copies memory items from one computing device to another. In high-speed networking and in high-performance computing environments, RDMA is expected to become increasingly invaluable. For example, data centers and server farms will rely on RDMA to coordinate computing devices connected by networks running packet protocols, such as TCP.
Due to the great commercial value of RDMA, various aspects of it are being standardized by, for example, the RDMA Consortium. However, these efforts do not as yet adequately address all of the areas of RDMA processing that are significant for producing the efficiencies promised by RDMA. For example, RDMA connections are often of long duration and often require intensive use of local input/output (I/O) resources. When a single computing device is called upon to support multiple, simultaneous RDMA connections, the local processing involved can overwhelm the resources of the computing device, leading to a bottleneck and to RDMA transfer inefficiencies.
In another area of concern, the network interface controller (NIC) that supports the RDMA connection protocol can get confused or overwhelmed because it also supports the underlying network packet protocol. Coordinating these two protocols with their disparate demands, and coordinating both with the operating system of the computing device, leads to complex problems and error-prone implementations. Most critically, problems can arise either when closing an existing RDMA connection or when initiating an RDMA connection on top of an existing packet stream.
The above are just a few examples of the areas of concern left to be addressed before RDMA can achieve its full potential.